package ${filterPackageStr};

import com.differ.jackyun.frame.base.util.Util;
import ${packageStr}.${className};
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Objects;

/**
 * ${entityDesc} - FilterDTO
 *
 * @author ${author}
 * @since ${time}
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ${filterName} extends ${className} {
    // 基础字段
    /**
     * 查询字段
     */
    private String[] cols;
    /**
     * 分页信息 - index
     */
    private Integer pageIndex;
    /**
     * 分页信息 - size
     */
    private Integer pageSize;
    /**
     * 分页信息 - offset
     */
    private Integer offset;
    /**
     * 是否需要已经逻辑删除的数据 - 默认不需要（需要的话请设置为true）
     */
    private Boolean withDeleted;
    /**
     * 排序字段s
     */
    private String[] sortFields;
    /**
    * 排序字段
    */
    private String sortField;
    /**
     * 排序方式 - ASC、DESC
     */
    private String sortOrder;
    /**
     * 标识s
     */
    private Long[] ids;

    // 扩展查询字段
${filterPropertiesStr}

    /**
     * 获取offset
     *
     * @return offest
     */
    public Integer getOffset() {
        if (Objects.isNull(this.pageSize)) {
            return 0;
        }
        if (Objects.isNull(this.pageIndex)) {
            this.pageIndex = 0;
        }

        this.offset = this.pageIndex * this.pageSize;
        return this.offset;
    }

    /**
    * 设置sortField，前端非不加s结尾
    *
    * @param sortField 排序字段
    */
    public void setSortField(String sortField) {
        this.sortField = sortField;
        if (Util.isString(sortField)) {
            this.sortFields = new String[]{ sortField };
        }
    }

    /**
     * 查询字段，英文逗号隔开
     *
     * @param cols 查询字段例如"id,name,productId"
     */
    public void setStringCols(String cols) {
        if (cols != null && cols.length() != 0) {
        	this.cols = cols.split(",");
        }
    }
}